#ifndef N1ARRAY_2006_10_29
#define N1ARRAY_2006_10_29

#include "N1Lib.h"

class NEXPORT N1Array : public N1Object {
public:
    N1Array();

    N1NAME(N1Array);
    N1DESC;

/*    N1Array(const char* filePath);
    N1Array(N1Object *obj);
    N1Array(N1Array *array);
    N1Array(N1Object *obj, N1UInt32 count);
    N1Array(N1UInt32 capacity);
    
    N1UInt32   count();
    N1Object*  objectAtIndex(N1UInt32 index);
    N1Array*   arrayByAddingObject(N1Object *anObject);
    NSArray*   arrayByAddingObjectsFromArray(NSArray *otherArray);
    NSString*  componentsJoinedByString(const char * separator);
    BOOL       containsObject(N1Object* anObject);
    const char* description();
//    - (NSString *)descriptionWithLocale:(NSDictionary *)locale;
//- (NSString *)descriptionWithLocale:(NSDictionary *)locale indent:(unsigned)level;
    void   exchangeObjectAtIndexes(N1UInt32 idx1, N1UInt32 idx2);
    N1Object* firstObjectCommonWithArray(N1Array *otherArray);
    void      getObjects(N1Object **objects);
    void      getObjects(N1Object **objects, N1Range range);
    - (unsigned)indexOfObject:(id)anObject;
- (unsigned)indexOfObject:(id)anObject inRange:(NSRange)range;
- (unsigned)indexOfObjectIdenticalTo:(id)anObject;
- (unsigned)indexOfObjectIdenticalTo:(id)anObject inRange:(NSRange)range;
- (BOOL)isEqualToArray:(NSArray *)otherArray;
- (id)lastObject;
- (NSEnumerator *)objectEnumerator;
- (NSEnumerator *)reverseObjectEnumerator;
- (NSData *)sortedArrayHint;
- (NSArray *)sortedArrayUsingFunction:(int (*)(id, id, void *))comparator context:(void *)context;
- (NSArray *)sortedArrayUsingFunction:(int (*)(id, id, void *))comparator context:(void *)context hint:(NSData *)hint;
- (NSArray *)sortedArrayUsingSelector:(SEL)comparator;
- (NSArray *)subarrayWithRange:(NSRange)range;
- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile;
- (BOOL)writeToURL:(NSURL *)url atomically:(BOOL)atomically;

- (void)makeObjectsPerformSelector:(SEL)aSelector;
- (void)makeObjectsPerformSelector:(SEL)aSelector withObject:(id)argument;

@end

@interface NSArray (NSArrayCreation)

- (id)initWithArray:(NSArray *)array;
- (id)initWithArray:(NSArray *)array copyItems:(BOOL)flag;
- (id)initWithContentsOfFile:(NSString *)path;
- (id)initWithContentsOfURL:(NSURL *)url;
- (id)initWithObjects:(id *)objects count:(unsigned)count;
- (id)initWithObjects:(id)firstObj, ...;


@end


@interface NSMutableArray : NSArray

- (void)addObject:(id)anObject;
- (void)insertObject:(id)anObject atIndex:(unsigned)index;
- (void)removeLastObject;
- (void)removeObjectAtIndex:(unsigned)index;
- (void)replaceObjectAtIndex:(unsigned)index withObject:(id)anObject;

@end

@interface NSMutableArray (NSExtendedMutableArray)
    
- (void)addObjectsFromArray:(NSArray *)otherArray;
- (void)removeAllObjects;
- (void)removeObject:(id)anObject inRange:(NSRange)range;
- (void)removeObject:(id)anObject;
- (void)removeObjectIdenticalTo:(id)anObject inRange:(NSRange)range;
- (void)removeObjectIdenticalTo:(id)anObject;
- (void)removeObjectsFromIndices:(unsigned *)indices numIndices:(unsigned)count;
- (void)removeObjectsInArray:(NSArray *)otherArray;
- (void)removeObjectsInRange:(NSRange)range;
- (void)replaceObjectsInRange:(NSRange)range withObjectsFromArray:(NSArray *)otherArray range:(NSRange)otherRange;
- (void)replaceObjectsInRange:(NSRange)range withObjectsFromArray:(NSArray *)otherArray;
- (void)setArray:(NSArray *)otherArray;
- (void)sortUsingFunction:(int (*)(id, id, void *))compare context:(void *)context;
- (void)sortUsingSelector:(SEL)comparator;

@end

@interface NSMutableArray (NSMutableArrayCreation)
*/

};


#endif //N1ARRAY_2006_10_29
